package com.yunyao.framework.vo.Invoice;

import com.baomidou.mybatisplus.annotation.TableField;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;

import java.math.BigDecimal;
import java.util.Date;
@Data
public class InvoiceVO {
    private static final long serialVersionUID = -7247769055592389913L;
    /**
     * 主键ID
     */
    private String id;

    /**
     * 合同ID
     */
    private String contractId;

    /**
     * 合同名称
     */
    private String contractName;

    /**
     * 发票来源 0=对账单 1=结算单
     */
    private String invoiceSource;

    /**
     * 发票类型 0=数电发票 1=数电转票
     */
    private String invoiceType;

    /**
     * 发票金额
     */
    private BigDecimal invoiceAmount;

    /**
     * 收票人
     */
    private String invoicePerson;

    /**
     * 联系方式
     */
    private String invoicePersonPhone;

    /**
     * 收票地址
     */
    private String invoicePersonAddress;

    /**
     * 收票邮箱
     */
    private String invoicePersonEmail;

    /**
     * 收票备注
     */
    private String invoicePersonMark;

    /**
     * 项目发票类型 0=项目公司发票 1=项目发票
     */
    private String invoiveProjectType;

    /**
     * 发票部门ID
     */
    private String invoiceDeptId;

    /**
     * 发票部门名称
     */
    private String invoiceDeptName;

    /**
     * 发票抬头
     */
    private String invoiceHeader;

    /**
     * 公司税号
     */
    private String companyTaxNo;

    /**
     * 开户行
     */
    private String openBank;

    /**
     * 开户行帐号
     */
    private String bankAccount;

    /**
     * 注册电话
     */
    private String registerPhone;

    /**
     * 注册地址
     */
    private String registerAddress;

    /**
     * 注册备注
     */
    private String registerMark;

    /**
     * 数据状态
     */
    private Integer status;

    /**
     * 删除标识
     */
    private Integer isDeleted;

    /**
     * 创建人
     */
    private String createdBy;

    /**
     * 创建部门
     */
    private String createDept;

    /**
     * 创建时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8")
    private Date createdAt;

    /**
     * 修改人
     */
    private String updatedBy;

    /**
     * 修改时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd",timezone="GMT+8")
    private Date updatedAt;


    /**
     * 预计收款时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd",timezone="GMT+8")
    private Date expectPaymentDate;


    /**
     * 当前日期到预计收款时间天数
     */
    private Long expectPaymentNum;
    /**
     * 是否逾期
     */
    private String expectPaymentStr;

    /**
     * 租户ID
     */
    private String tenantId;

    /**
     * 项目ID
     */
    private String projectId;

    /**
     * 项目名称
     */
    private String projectName;

    /**
     * 项目所属部门ID
     */
    private String projectDeptId;

    /**
     * 项目所属部门名称
     */
    private String projectDeptName;

    /**
     * 供应商部门ID
     */
    private String supplierDeptId;

    /**
     * 供应商部门名称
     */
    private String supplierDeptName;

    /**
     * 采购单位ID
     */
    private String purchaseDeptId;

    /**
     * 采购单位名称
     */
    private String purchaseDeptName;

    /**
     * 红冲的原发票ID
     */
    private String sourceInvoiceId;

    /**
     * 开票时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd",timezone="GMT+8")
    private Date invoicingDate;

    /**
     * 开票代码
     */
    private String invoicingCode;

    /**
     * 开票号码
     */
    private String invoicingNo;

    /**
     * 开票税率
     */
    private BigDecimal invoicingRate;

    /**
     * 开票金额(元)
     */
    private BigDecimal invoicingPrice;

    /**
     * 开票不含税金额（元）
     */
    private BigDecimal invoicingNotaxPrice;

    /**
     * 开票税额
     */
    private BigDecimal invoicingRatePrice;

    /**
     * 开票附件
     */
    private String invoicingFile;

    /**
     * 开票备注
     */
    private String invoicingMark;

    /**
     * 发票数据类型 0=云采开票 1=供应商开票
     */
    private String invoiceDataType;

    /**
     * 开票状态0 正常 1作废 2红冲
     */
    private Integer invoicingStatus;

    /**
     * 合同类型0主合同1补充合同
     */
    private String contractType;

    /**
     * 合同编号
     */
    private String contractNo;

    /**
     * 申请人
     */
    private String applyName;

    /**
     * 申请时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd",timezone="GMT+8")
    private Date applyDate;

    /**
     * 附件状态
     */
    private String fileStatus;

    /**
     * 合同含税总额
     */
    private BigDecimal contractTotalPrice;

    /**
     * 合同方式0电线电缆及光纤光缆 1 电梯及扶梯
     */
    private String contractMethod;

    /**
     * 开票类型0手工 1 新中大
     */
    private String openInvoiceType;

    /**
     * 收票时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd",timezone="GMT+8")
    private Date invoiceReceiveDate;

    /**
     * xml发票文件
     */
    private String invoicingXmlFile;

    /**
     * 发票绑定状态0未绑定1已绑定
     */
    private String invoiceBindStatus;

    /**
     * 绑定的发票ID
     */
    private String invoiceBindId;

    /**
     * 绑定的发票名称
     */
    private String invoiceBindName;

    /**
     * 发票接收状态
     */
    private String invoiceReceiveStatus;

    /**
     * 对应的红冲单据id
     */
    private String redInvoiceId;

    /**
     * 收款或付款的关联金额
     */
    private BigDecimal relatedAmount;

    /**
     * 收款或付款关联状态（1 未关联，2 部分关联，3 已关联）
     */
    private String relatedStatus;
    /**
     * 订单总数量
     */
    private Integer orderNum;

    /**
     * 本次开票订单数
     */
    private Integer orderInvoiceNum;

    /**
     * 可开票订单数
     */
    private Integer ordercanInvoiceNum;
}
